package zgrjb.snbq.teach_platform.dto.model;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 考试表 DO
 * 对应数据库表：exam
 * 
 * CREATE TABLE `exam` (
 *     `id` BIGINT UNSIGNED NOT NULL PRIMARY KEY COMMENT '考试ID',
 *     `name` VARCHAR(128) NOT NULL COMMENT '考试名称',
 *     `description` VARCHAR(256) DEFAULT NULL COMMENT '考试说明',
 *     `type` VARCHAR(64) DEFAULT NULL COMMENT '考试类型：online/offline',
 *     `url` VARCHAR(512) DEFAULT NULL COMMENT '在线考试链接',
 *     `content` TEXT DEFAULT NULL COMMENT '考试内容/题目',
 *     `ans` TEXT DEFAULT NULL COMMENT '答案',
 *     `course_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '关联课程ID',
 *     `class_id` BIGINT UNSIGNED NOT NULL COMMENT '关联班级ID',
 *     `teacher_id` BIGINT UNSIGNED NOT NULL COMMENT '出题教师ID',
 *     `begin` DATETIME DEFAULT NULL COMMENT '考试开始时间',
 *     `end` DATETIME DEFAULT NULL COMMENT '考试结束时间',
 *     `duration` INT DEFAULT 120 COMMENT '考试时长（分钟）',
 *     `total_score` DECIMAL(5,2) DEFAULT 100.00 COMMENT '总分',
 *     `pass_score` DECIMAL(5,2) DEFAULT 60.00 COMMENT '及格分',
 *     `status` TINYINT DEFAULT 1 COMMENT '状态：1-未开始，2-进行中，3-已结束',
 *     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 *     `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
 * );
 */

/**
 * @Author: breathe
 * @CreateTime: 2025-05-21
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("exam")
public class ExamDO {

    /**
     * 考试ID
     */
    private Long id;

    /**
     * 考试名称
     */
    private String name;

    /**
     * 考试说明
     */
    private String description;

    /**
     * 考试类型：online/offline
     */
    private String type;

    /**
     * 在线考试链接
     */
    private String url;

    /**
     * 考试内容/题目
     */
    private String content;

    /**
     * 答案
     */
    private String ans;

    /**
     * 关联课程ID
     */
    @TableField("course_id")
    private Long courseId;

    /**
     * 关联班级ID
     */
    @TableField("class_id")
    private Long classId;

    /**
     * 出题教师ID
     */
    @TableField("teacher_id")
    private Long teacherId;

    /**
     * 考试开始时间
     */
    private LocalDateTime begin;

    /**
     * 考试结束时间
     */
    private LocalDateTime end;

    /**
     * 考试时长（分钟）
     */
    private Integer duration;

    /**
     * 总分
     */
    @TableField("total_score")
    private BigDecimal totalScore;

    /**
     * 及格分
     */
    @TableField("pass_score")
    private BigDecimal passScore;

    /**
     * 状态：1-未开始，2-进行中，3-已结束
     */
    private Integer status;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
}
